/*
 * Description: performance scenes definition.
 */
#ifndef PERF_SCENE_H
#define PERF_SCENE_H

#include <string>
#include <vector>
#include <unordered_map>

namespace PERF {
const std::string appInit = "appInit";
const std::string fileOpen = "FileOpen";
const std::string vmBoot = "vmBoot";
const std::string vmForeground = "vmForeground";
const std::string vmKeyboardMouseProbe = "vmKeyboardMouseProbe";
const std::string vmInstall = "vmInstall";
const std::string ioDiskBoost = "ioDiskBoost";
const std::string appInstall = "appInstall";
const std::string appCreateFolder = "appCreateFolder";

enum class PERF_SCENE {
    APP_INIT = 0,
    FILE_OPEN,
    VM_BOOT,
    VM_FOREGROUND,
    VM_KEYBOARDMOUSEPROBE,
    VM_INSTALL,
    VM_IODISKBOOST,
	APP_INSTALL,
    APP_CREATE_FOLDER
};

const std::vector<std::string> PERF_SCENES = {
    appInit,
    fileOpen,
    vmBoot,
    vmForeground,
    vmKeyboardMouseProbe,
    vmInstall,
    ioDiskBoost,
    appInstall,
    appCreateFolder
};

const std::unordered_map<std::string, PERF_SCENE> PERF_SECNE_TO_ENUM = {
    { appInit, PERF_SCENE::APP_INIT },
    { fileOpen, PERF_SCENE::FILE_OPEN },
    { vmBoot, PERF_SCENE::VM_BOOT },
    { vmForeground, PERF_SCENE::VM_FOREGROUND},
    { vmKeyboardMouseProbe, PERF_SCENE::VM_KEYBOARDMOUSEPROBE},
    { vmInstall, PERF_SCENE::VM_INSTALL },
    { ioDiskBoost, PERF_SCENE::VM_IODISKBOOST },
    { appInstall, PERF_SCENE::APP_INSTALL },
    { appCreateFolder, PERF_SCENE::APP_CREATE_FOLDER }
};
}

#endif